.. _ecmHomeMot_MoveStart: ecmHomeMot_MoveStart ==================== -------------------- SYNOPSIS -------- .. code-block:: none t_cmdidx ecmHomeMot_MoveStart(_FF)( t_i32 NetID, t_i32 Axis, t_i32 Direction, t_i32 *ErrCode ) .. Hint:: :ref:`Fast Function(_FF) ` 사용 가능 DESCRIPTION ----------- - 이 함수는 원점복귀 작업을 수행합니다. - ecmHomeMot_MoveStart, ecmHomeMot_MoveStart_FF 함수는 모션을 시작 시킨 후 바로 반환됩니다. PARAMETER --------- - NetID : Network 번호 - Axis : 대상 축 번호 - :ref:`Direction ` : 원점 복귀 모션을 수행할 방향을 지정합니다. - ErrCode : 이 매개 변수를 통하여 현재의 에러 코드를 반환합니다. 단, 이 매개 변수에 NULL을 전달하면 에러 코드를 반환하지 않습니다. RETURN VALUE ------------ - 이 리턴값은 함수의 cmdidx가 반환됩니다. EXAMPLE ````````````` .. code-block:: cpp :linenos: //본 예제는 ecmHomeMot_MoveStart() 함수를 이용하여 x,y축 의 원점복귀를 수행하는 함수입니다. 단 원점복귀에 대한 환경설정은 이미 이루어진 것으로 가정합니다. #include "ComiEcatSdk_Api.h" #define AXISX 0 #define AXISY 1 t_32 Error_Num = 0;//함수 별 에러 코드 저장 변수 /*************************************************************** * OnProgramInitial : 이 함수는 가상의 함수로서 프로그램 초기화 루틴이 * 적용되는 부분을 의미합니다. //5~9장 사이 내용 참고 ***************************************************************/ void OnProgramInitial() { TEcDevInfo Device_Info; //디바이스 정보 저장 할 구조체 t_i32 Device_Num = 0; t_success nIsLoaded = ecDll_Load (); if(!ecGn_LoadDevices(&Error_Num)){ //장치 로드 //로드 실패시 예외 처리 } if(!ecGn_GetDevInfo(Device_Num,&Device_Info, &Error_Num)){ //디바이스 정보 로드 실패 시 예외 처리 } ecNet_SetAlState(Device_Info.NetIdx, ecAL_STATE_OP, &Error_Num); //ALState OP모드로 전환 ecmSxCtl_SetSvon(Device_Info.NetIdx, AXISX, &Error_Num); ecmSxCtl_SetSvon(Device_Info.NetIdx, AXISY, &Error_Num); } //OnProgramInitial 함수 끝 /*************************************************************** * OnHomeSetSpeed : 이 함수는 속도설정의 변경이 필요할 때 * 호출되는 가상의 함수 입니다. 이때 m_fVwork, m_fAcc, m_fDec, m_sPecVel변수를 * 통하여 속도, 가속도 , 감속도, 홈리턴 속도 값이 적절하게 전달된다고 가정합니다. ***************************************************************/ void OnHomeSetSpeed() { ecmHomeCfg_SetMode(Device_Info.NetIdx, AXISX, 7,&Error_Num); //X축의 홈복귀 모드를 설정합니다. (함수 설명에 Rererence 참고) ecmHomeCfg_SetMode(Device_Info.NetIdx, AXISY, 7,&Error_Num); //Y축의 홈복귀 모드를 설정합니다. (함수 설명에 Rererence 참고) ecmHomeCfg_SetOffset(Device_Info.NetIdx, AXISX, 1000, &Error_Num); //X축의 홈복귀 추가 이동 거리를 설정합니다. ecmHomeCfg_SetOffset(Device_Info.NetIdx, AXISY, 1000, &Error_Num); //Y축의 홈복귀 추가 이동 거리를 설정합니다. ecmHomeCfg_SetSpeedPatt(Device_Info.NetIdx, AXISX, ecmSMODE_SCURVE, m_fVworkx, m_fAccx, m_fDecx, m_sPecVel , &Error_Num ); //X축 가감속을 수행 모드로 설정 하고 속도, 가속도, 감속도 설정 ecmHomeCfg_SetSpeedPatt(Device_Info.NetIdx, AXISY, ecmSMODE_SCURVE, m_fVworky m_fAccy, m_fDecy, m_sPecVel, &Error_Num ); //Y축 가감속을 수행 모드로 설정 하고 속도, 가속도, 감속도 설정 } /*************************************************************** * OnHomeReturn : 이 함수는 가상의 함수로서 원점복귀를 실행합니다. ****************************************************************/ void OnHomeRetrun() { t_i32 Direction = ecmDIR_P; // +방향으로 원점 복귀 실행 ecmHomeMot_MoveStart(Device_Info.NetIdx, AXISX, Direction, &Error_Num) ; // X축 원점복귀 시작 ecmHomeMot_MoveStart(Device_Info.NetIdx, AXISY, Direction, &Error_Num) ; // Y축 원점복귀 시작 if(!ecmHomeSt_WaitCompt (Device_Info.NetIdx, AXISX, &Error_Num)){ //X축이 원점 복귀 하는 동안 블로킹하는 함수 // 복귀 완료 대기 실패 예외 처리 return; } if(!ecmHomeSt_WaitCompt (Device_Info.NetIdx, AXISY, &Error_Num)){ //Y축이 원점 복귀 하는동안 블로킹하는 함수 // 복귀 완료 대기 실패 예외 처리 return; } }